1
บทนำบทที่ 3: การจัดการกับการจำแนกประเภทที่ไม่เป็นเชิงเส้น
EvoClass-AI002ตอนที่ 3
00:00

เราได้ก้าวข้ามข้อจำกัดของโมเดลเชิงเส้น ซึ่งมีปัญหาในการจำแนกข้อมูลที่แยกออกจากกันด้วยเส้นตรง วันนี้ เราจะใช้แนวทางการทำงานของ PyTorch เพื่อสร้าง เครือข่ายประสาทเทียมแบบลึก (DNN)ที่สามารถเรียนรู้ได้ถึง ขอบเขตการตัดสินใจที่ซับซ้อนและไม่เป็นเชิงเส้นซึ่งจำเป็นต่อการจำแนกประเภทในโลกความจริง

1. การมองเห็นความจำเป็นของข้อมูลที่ไม่เป็นเชิงเส้น

ขั้นตอนแรกของเราคือการสร้างชุดข้อมูลจำลองที่ท้าทาย เช่น โครงสร้างสองดวงจันทร์ เพื่อแสดงให้เห็นอย่างชัดเจนว่าทำไมโมเดลเชิงเส้นพื้นฐานจึงล้มเหลว โครงสร้างนี้บังคับให้เราใช้สถาปัตยกรรมลึกเพื่อประมาณเส้นโค้งที่ซับซ้อนซึ่งจำเป็นต่อการแยกคลาส

คุณสมบัติของข้อมูล

  • โครงสร้างข้อมูล:ฟีเจอร์ข้อมูลจำลอง (เช่น $1000 \times 2$ สำหรับ $1000$ ตัวอย่างที่มีฟีเจอร์ 2 ตัว)
  • ประเภทผลลัพธ์:ค่าความน่าจะเป็นเดียว มักเป็น torch.float32 แทนการเป็นสมาชิกของคลาส
  • เป้าหมาย:เพื่อสร้าง ขอบเขตการตัดสินใจที่โค้งผ่านการคำนวณแบบชั้น
พลังของฟังก์ชันการกระตุ้นที่ไม่เป็นเชิงเส้น
หลักการสำคัญของ DNN คือการนำความไม่เป็นเชิงเส้นเข้ามาในเลเยอร์ซ่อนไว้ผ่านฟังก์ชันเช่น ReLU. หากไม่มีฟังก์ชันเหล่านี้ การวางเลเยอร์ซ้อนกันจะทำให้เกิดโมเดลเชิงเส้นขนาดใหญ่เพียงอย่างเดียว ไม่ว่าจะลึกแค่ไหนก็ตาม
data_setup.py
เทอร์มินัลbash — สภาพแวดล้อมจำแนกประเภท
> เตรียมพร้อมแล้ว คลิก "รัน" เพื่อดำเนินการ
>
ตัวตรวจสอบเทนเซอร์สด

รันโค้ดเพื่อดูเทนเซอร์ที่ใช้งานอยู่
คำถามที่ 1
จุดประสงค์หลักของฟังก์ชันการกระตุ้น ReLU ในเลเยอร์ซ่อนคืออะไร?
เพิ่มความไม่เป็นเชิงเส้น เพื่อให้สถาปัตยกรรมลึกสามารถจำลองเส้นโค้งได้
เร่งความเร็วการคูณเมทริกซ์
รับรองว่าผลลัพธ์อยู่ระหว่าง 0 ถึง 1
ปรับมาตรฐานผลลัพธ์ของเลเยอร์ให้อยู่ที่ค่าเฉลี่ยเป็นศูนย์
คำถามที่ 2
ฟังก์ชันการกระตุ้นใดที่จำเป็นใน เอาต์พุตเลเยอร์สำหรับงานจำแนกประเภทแบบไบนารี?
Sigmoid
Softmax
ReLU
คำถามที่ 3
ฟังก์ชันการสูญเสียใดที่สัมพันธ์โดยตรงกับปัญหาการจำแนกประเภทแบบไบนารีที่ใช้เอาต์พุต Sigmoid?
ฟังก์ชันการสูญเสียแบบครอสเอนโทรปีแบบไบนารี (BCE)
ค่าผลต่างกำลังสองเฉลี่ย (MSE)
ฟังก์ชันการสูญเสียแบบครอสเอนโทรปี
ภารกิจ: การออกแบบสถาปัตยกรรมหลัก
รวมองค์ประกอบสถาปัตยกรรมเพื่อการเรียนรู้แบบไม่เป็นเชิงเส้น
คุณต้องสร้าง nn.Module สำหรับงานสองดวงจันทร์ ฟีเจอร์ขาเข้า: 2 คลาสขาออก: 1 (ความน่าจะเป็น)
ขั้นตอนที่ 1
อธิบายลำดับการคำนวณสำหรับเลเยอร์ซ่อนเดี่ยวใน DNN นี้
คำตอบ:
เข้า $\to$ เลเยอร์เชิงเส้น (เมทริกซ์น้ำหนัก) $\to$ การกระตุ้น ReLU $\to$ ผลลัพธ์ส่งไปยังเลเยอร์ถัดไป
ขั้นตอนที่ 2
ขนาดเลเยอร์สุดท้ายต้องเป็นเท่าใด ถ้ารูปร่างขาเข้าคือ $(N, 2)$ และเราใช้ฟังก์ชันการสูญเสีย BCE?
คำตอบ:
เลเยอร์เอาต์พุตต้องมีขนาด $(N, 1)$ เพื่อให้ได้คะแนนความน่าจะเป็นเดียวต่อตัวอย่าง ซึ่งสอดคล้องกับรูปร่างของฉลาก